package ${basePackage}.generator;

import cn.hutool.core.io.FileUtil;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * 动态文件生成
 */
public class DynamicGenerator {



    /**
     *
     * @param inputPath 模板输入路径
     * @param outputPath 文件输出路径
     * @param model 对象模型
     */
    public static void doGenerate(String inputPath, String outputPath, Object model) throws IOException, TemplateException {


        File input = new File(inputPath);
        String inputParent = input.getParent();
        String fileName = input.getName();
        // new 出 Configuration 对象，参数为 FreeMarker 版本号
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);

        // 指定模板文件所在的路径
        configuration.setDirectoryForTemplateLoading(new File(inputParent));

        // 设置模板文件使用的字符集
        configuration.setDefaultEncoding("utf-8");

        // 创建模板对象，加载指定模板
        // 解决中文乱码问题
        Template template = configuration.getTemplate(fileName,"utf-8");
        if (!FileUtil.exist(outputPath))
        {
            FileUtil.touch(outputPath);
        }
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(Paths.get(outputPath)), StandardCharsets.UTF_8));
        template.process(model, out);
        out.close();
    }
}
